home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #023 (19xx)(Amiga User Group Deutschland e.V.).zip / Franz PD Disk #023 (19xx)(Amiga User Group Deutschland e.V.).adf / CZSPLIT / smidi.c < prev    next >
C/C++ Source or Header  |  1988-12-10  |  2KB  |  79 lines

  1. /* simple midi io stuff 
  2.  
  3.    (C) 1988 by O.Wagner
  4.                Landsberge 5
  5.                4322 Sprockhövel 2
  6.                West Germany
  7. */
  8.  
  9. #include <devices/serial.h>
  10. #include <functions.h>
  11.  
  12. static char *sername=SERIALNAME;
  13. static struct MsgPort *ReadPort,*WritePort,*CreatePort();
  14. static struct IOExtSer *Read_Request,*Write_Request,*CreateExtIO();
  15. static unsigned char ReadB,WriteB=0;
  16.  
  17. int midiopen()
  18. {
  19.  Read_Request=CreateExtIO((ReadPort=CreatePort(0L,0L)),(LONG)sizeof(struct IOExtSer));
  20.  Read_Request->io_SerFlags=SERF_SHARED|SERF_RAD_BOOGIE;
  21.  if(OpenDevice(sername,NULL,Read_Request,NULL)) {
  22.   DeleteExtIO(Read_Request);
  23.   DeletePort(ReadPort);
  24.   return(1);
  25.  }
  26.  Read_Request->IOSer.io_Length =1;
  27.  Read_Request->IOSer.io_Data   =(APTR)&ReadB;
  28.  Read_Request->io_Baud         =31250;
  29.  Read_Request->io_ReadLen      =8;
  30.  Read_Request->io_WriteLen     =8;
  31.  Read_Request->io_CtlChar      =0xf4f4f4f4L;
  32.  Read_Request->IOSer.io_Command=SDCMD_SETPARAMS;
  33.  DoIO(Read_Request); 
  34.  Read_Request->IOSer.io_Command=CMD_READ;
  35.  Write_Request=CreateExtIO((WritePort=CreatePort(0L,0L)),(LONG)sizeof(struct IOExtSer));
  36.  Write_Request->io_SerFlags=SERF_SHARED|SERF_RAD_BOOGIE;
  37.  Write_Request->io_StopBits=1;
  38.  if(OpenDevice(sername,NULL,Write_Request,NULL)) {
  39.   DeleteExtIO(Read_Request);
  40.   DeletePort(ReadPort);
  41.   DeleteExtIO(Write_Request);
  42.   DeletePort(WritePort);
  43.   return(2);
  44.  }
  45.  Write_Request->IOSer.io_Command=CMD_WRITE;
  46.  Write_Request->IOSer.io_Length =1;
  47.  Write_Request->IOSer.io_Data   =(APTR)&WriteB;
  48.  Write_Request->io_SerFlags     =SERF_SHARED|SERF_XDISABLED;
  49.  BeginIO(Read_Request);
  50.  return(0);
  51. }
  52.  
  53. void midiclose()
  54.  CloseDevice(Read_Request); 
  55.  CloseDevice(Write_Request);
  56.  DeleteExtIO(Read_Request);
  57.  DeletePort(ReadPort);
  58.  DeleteExtIO(Write_Request);
  59.  DeletePort(WritePort);
  60.  
  61. void midiput(c)
  62. register int c;
  63. {
  64.  WriteB=c;
  65.  DoIO(Write_Request);
  66. }
  67.  
  68. int midiget()
  69. {
  70.  register int c;
  71.  
  72.  WaitIO(Read_Request);
  73.  c=ReadB;
  74.  BeginIO(Read_Request);
  75.  return(c);
  76. }
  77.